﻿#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    /*
     * 自定义辅助类,这个类的作用就是提供给QWebChannel进行注册,注册之后这个类就可以直接在前端使用,
     * 注意这个一定要在QWebEngineViewPlus对象之前定义,因为这里面有设置调试界面的环境配置,若是在QWebEngineViewPlus之后定义,则会出现调试环境设置失败的问题
    */
    WebClientBridge_obj = new WebClientBridge();
    //初始化前端对象
    webView = new QWebEngineViewPlus(this);//QT提供的类,可以将html文件显示到这个控件上
    //通过文件的相对地址获取文件的绝对地址
    QDir tempDir("./WebView/test.html");
    QString absoluteDir = tempDir.absolutePath();
    //webView->load(QUrl(absoluteDir));//设置要显示的html文件(这里QUrl的地址要写绝对地址,否则渲染不出来,据说使用qrc相对地址也可以)
    webView->load(QUrl("https://baidu.com/"));//设置要显示的网页文件
    //webView->load(QUrl("http://localhost:8080/"));//设置要显示的本地网页文件
    webView->setMinimumSize(this->size());//设置QWebEngineViewPlus窗口最小大小为主窗口初始化大小
    //webView->move((this->width()-webView->width())/2,(this->height()-webView->height())/2);//使QWebEngineViewPlus窗口相对于整个程序居中
    webChannel = new QWebChannel;//QT提供的类,用于client与web通信的通道
    webChannel->registerObject("WebClientBridge_obj", WebClientBridge_obj);//将自定义类注册到通信通道中
    webView->page()->setWebChannel(webChannel);//最后一步将通信的通道设置到QWebEngineViewPlus控件上
    ui->pushButton->move(100,900);
}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::on_pushButton_clicked()
{
    //打开开发者工具
    WebClientBridge_obj->openDevelopTool();
    static int count = 0;
    //直接调用前端函数
    webView->page()->runJavaScript(QString("showAlert(%1)").arg(++count));
}

void MainWindow::resizeEvent(QResizeEvent *)
{
    //让web页面的大小始终填满整个窗口,测试on_pushButton_clicked功能时屏蔽,否则会遮住pushButton按钮
    webView->resize(this->size());
}
